﻿namespace OutLook.Model.Domains
{
    using System;
    using System.Runtime.Serialization;
    using OutLook.Model.Infrastructure;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    [DataContract]
    public class User: IValidatable,IAssignable
    {
        #region Constructors

        public User() { }

        #endregion

        #region Properties

        [DataMember(Order = 5)]
        public Enumerators.UserRoles Role
        {
            get { return m_Role; }
            set { m_Role = value; }
        }

        [DataMember(Order = 2)]
        public string LastName
        {
            get { return m_LastName; }
            set { m_LastName = value; }
        }

        [DataMember(Order=1)]
        public string FirstName
        {
            get { return m_FirstName; }
            set { m_FirstName = value; }
        }

        [DataMember(Order = 4)]
        public string Password
        {
            get { return m_Password; }
            set { m_Password = value; }
        }

        [DataMember(Order = 3)]
        public string Login
        {
            get { return m_Login; }
            set { m_Login = value; }
        }
        
        [DataMember(Order=6)]
        public string Email
        {
            get { return m_Email; }
            set { m_Email = value; }
        }
        
        
        #endregion        

        #region Fields

        private string m_Login;

        private string m_Password;

        private string m_FirstName;

        private string m_LastName;

        private Enumerators.UserRoles m_Role;

        private string m_Email;

        #endregion


        public bool Validate()
        {
            throw new NotImplementedException();
        }

        public void AssignTo(object obj)
        {
            throw new NotImplementedException();
        }
    }
}
